package services import ( "AT-Server/server" "context" "errors" "github.com/gogf/gf/text/gstr" "github.com/gogf/gf/util/gconv" ) var errDataFormat = errors.New("错误的数据格式") type ATService struct { srv *server.Server } func NewATService(srv *server.Server) *ATService { return &ATService{srv: srv} } // GetGPSInfo 查询GPS信息 func (a *ATService) GetGPSInfo(ctx context.Context, args *BaseArgs, reply *GPSInfoReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetGPSInfo() if err != nil { return err } arr := gstr.Split(result, ",") if len(arr) > 1 { reply.Lat = gconv.Float64(arr[0]) reply.Lng = gconv.Float64(arr[1]) } else { return errDataFormat } return nil } // GetIMEI 查询串号 func (a *ATService) GetIMEI(ctx context.Context, args *BaseArgs, reply *string) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetIMEI() if err != nil { return err } reply = &result return nil } // GetICCID 查询ICCID func (a *ATService) GetICCID(ctx context.Context, args *BaseArgs, reply *string) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetICCID() if err != nil { return err } reply = &result return nil } // SetDTUMode 配置工作模式 func (a *ATService) SetDTUMode(ctx context.Context, args *SetDTUModeArgs, reply *EmptyResult) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } err = client.SetDTUMode(args.Mode, args.Channel) if err != nil { return err } return nil } // GetDTUMode 查询工作模式 func (a *ATService) GetDTUMode(ctx context.Context, args *BaseArgs, reply *DTUModeReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } str, err := client.GetDTUMode() if err != nil { return err } arr := gstr.Split(str, ",") if len(arr) > 3 { reply.Channel1 = gconv.Int(arr[0]) } return nil } // SetServerAddr 设置连接服务器地址 func (a *ATService) SetServerAddr(ctx context.Context, args *ServerAddrArgs, reply *EmptyResult) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } err = client.SetServerAddr(args.Channel, args.LinkType, args.Ip, args.Port) if err != nil { return err } return nil } // GetServerAddr 查询连接服务器地址 func (a *ATService) GetServerAddr(ctx context.Context, args *BaseArgs, reply *ServerAddrReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetServerAddr() if err != nil { return err } var addrs []*Addr for _, v := range result { arr := gstr.Split(v, ",") if len(arr) > 3 { addrs = append(addrs, &Addr{ Channel: gconv.Int(arr[0]), LinkType: arr[1], Addr: arr[2], Port: gconv.Int(arr[3]), }) } } reply.Addrs = addrs return nil } // SetUARTParam 设置串口参数 func (a *ATService) SetUARTParam(ctx context.Context, args *UARTArgs, reply *EmptyResult) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } err = client.SetUARTParam(args.Rate, args.DBit, args.CBit, args.SBit) if err != nil { return err } return nil } // GetUARTParam 查询串口配置 func (a *ATService) GetUARTParam(ctx context.Context, args *BaseArgs, reply *UARTReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetUARTParam() if err != nil { return err } arr := gstr.Split(result, ",") if len(arr) > 3 { reply.Rate = gconv.Int(arr[0]) reply.DBit = gconv.Int(arr[1]) reply.CBit = gconv.Int(arr[2]) reply.SBit = gconv.Int(arr[3]) } return nil } // SetDTUID 注册包设置 func (a *ATService) SetDTUID(ctx context.Context, args *DTUIDArgs, reply *EmptyResult) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } err = client.SetDTUID(args.Mode, args.IdType, args.Format, args.Content, args.Channel) if err != nil { return err } return nil } // GetDTUID 查询注册包设置 func (a *ATService) GetDTUID(ctx context.Context, args *DTUIDArgs, reply *DTUIDReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetDTUID() if err != nil { return err } var dtuIds []*DTUID for _, v := range result { arr := gstr.Split(v, ",") if len(arr) > 4 { dtuIds = append(dtuIds, &DTUID{ Mode: gconv.Int(arr[0]), IdType: gconv.Int(arr[1]), Format: gconv.Int(arr[2]), Content: arr[3], Channel: gconv.Int(arr[4]), }) } } reply.DTUIDs = dtuIds return nil } // GetKeepAlive 查询心跳包配置 func (a *ATService) GetKeepAlive(ctx context.Context, args *BaseArgs, reply *KeepAliveReply) error { client, err := a.srv.GetATClient(args.IMEI) if err != nil { return err } result, err := client.GetKeepAlive() if err != nil { return err } var channels []*KeepAlive for _, v := range result { arr := gstr.Split(v, ",") if len(arr) > 3 { channels = append(channels, &KeepAlive{ Duration: gconv.Int(arr[0]), Format: gconv.Int(arr[1]), Content: arr[2], Channel: gconv.Int(arr[3]), }) } } reply.Channels = channels return nil }