package main import ( "crypto/rand" "encoding/hex" "encoding/json" "fmt" "test/common" "test/common/tmkind" // "strings" ) func main() { var err error terminalClient := common.NewTerminalClient("192.168.133.106:42381") //data := make([]byte, 256) err = terminalClient.Connect() if err != nil { panic(err) } randomBytes := make([]byte, 10) _, err = rand.Read(randomBytes) if err != nil { panic(err) } myAddr := common.TetraFlexAddress{ Kind: common.UserNo, UserNo: "1005", } // 20160111 tfAuthReq, err := common.NewTMAuthReq(myAddr, 0, randomBytes, 1, "OpenTetraFlex", 20230831, "1.0.0") if err != nil { panic(err) } fmt.Println(hex.EncodeToString(tfAuthReq.Encode())) terminalClient.Send(tfAuthReq) for { select { case parsedMsg := <-terminalClient.RX: fmt.Println(hex.EncodeToString(parsedMsg.Bytes())) if parsedMsg.Kind == tmkind.IpApiAuthenticationChallenge { authChall, err := parsedMsg.AsAuthenticationChallenge() if err != nil { panic(err) } if authChall.PinRequested { fmt.Println("Sending Auth Pin") //terminalClient.SendTM() } } if parsedMsg.Kind == tmkind.IpApiKeepAliveChallenge { challenge, err := parsedMsg.AsKeepAliveChallenge() if err != nil { panic(err) } keepAliveBytes, _ := json.Marshal(challenge) fmt.Println(string(keepAliveBytes)) response, err := common.NewTMKeepAliveResponse(challenge) if err != nil { panic(err) } fmt.Println(hex.EncodeToString(response.Encode())) terminalClient.Send(response) // Send Subscribe response, err = common.NewTMNotificationRequest([]tmkind.TetraFlexTerminalMessageKinds{ tmkind.IpApiCallUpdateNotification, tmkind.IpApiSdsTlReportNotification, tmkind.IpApiSdsTlShortReportNotification, tmkind.IpApiSdsDataType4Notification, tmkind.IpApiSdsStatusNotification, tmkind.IpApiSdsTlTransferNotification, }) if err != nil { panic(err) } fmt.Println(hex.EncodeToString(response.Encode())) terminalClient.Send(response) response, err = common.NewTMIpApiGroupAttachRequest([]common.GroupConfig{ { Group: common.NewAddressFromSSINumber(101), ScanMode: common.Scanned, }, { Group: common.NewAddressFromSSINumber(102), ScanMode: common.Scanned, }, { Group: common.NewAddressFromSSINumber(103), ScanMode: common.Scanned, }, }) if err != nil { panic(err) } fmt.Println(hex.EncodeToString(response.Encode())) terminalClient.Send(response) groupAddr := common.NewAddressFromSSINumber(103) identityNum := common.NewAddressFromSSINumber(1007) response, err = common.NewTMIpApiCallSetupRequest(*groupAddr, common.CallTypeGroup, common.CallPriorityDefault, false, common.TetraFlexIdentityInfo{ Description: "blurb", Kind: common.IdentityKindTerminal, Address: *identityNum, UnifiedSSIKinds: common.UnifiedKindPersonalNumber, }) if err != nil { panic(err) } fmt.Println(hex.EncodeToString(response.Encode())) terminalClient.Send(response) } if parsedMsg.Kind == tmkind.IpApiRegistrationConfirm { regInfo, err := parsedMsg.AsRegistrationInfo() if err != nil { panic(err) } fmt.Println(hex.EncodeToString(parsedMsg.Bytes())) regInfoBytes, _ := json.Marshal(regInfo) fmt.Println(string(regInfoBytes)) } //if parsedMsg.Kind == tmkind.IpApiNo } } }