github.com/enbility/spine-go@v0.7.0/model/datagram_additions.go (about) 1 package model 2 3 import ( 4 "fmt" 5 ) 6 7 func (d *DatagramType) PrintMessageOverview(send bool, localFeature, remoteFeature string) string { 8 var result string 9 10 transmission := "Send" 11 device := "" 12 if d.Header.AddressDestination != nil && d.Header.AddressDestination.Device != nil { 13 device = string(*d.Header.AddressDestination.Device) 14 } 15 if !send { 16 transmission = "Recv" 17 if d.Header.AddressSource.Device != nil { 18 device = string(*d.Header.AddressSource.Device) 19 } 20 device = fmt.Sprintf("%s:%s to %s", device, remoteFeature, localFeature) 21 } 22 23 cmdClassifier := CmdClassifierType("Unknown") 24 if d.Header.CmdClassifier != nil { 25 cmdClassifier = *d.Header.CmdClassifier 26 } 27 msgCounter := MsgCounterType(0) 28 if d.Header.MsgCounter != nil { 29 msgCounter = *d.Header.MsgCounter 30 } 31 cmd := CmdType{} 32 if len(d.Payload.Cmd) > 0 { 33 cmd = d.Payload.Cmd[0] 34 } 35 36 switch cmdClassifier { 37 case CmdClassifierTypeRead: 38 result = fmt.Sprintf("%s: %s %s %d %s", transmission, device, cmdClassifier, msgCounter, cmd.DataName()) 39 case CmdClassifierTypeReply: 40 msgCounterRef := *d.Header.MsgCounterReference 41 result = fmt.Sprintf("%s: %s %s %d %d %s", transmission, device, cmdClassifier, msgCounter, msgCounterRef, cmd.DataName()) 42 case CmdClassifierTypeResult: 43 msgCounterRef := *d.Header.MsgCounterReference 44 errorNumber := *d.Payload.Cmd[0].ResultData.ErrorNumber 45 result = fmt.Sprintf("%s: %s %s %d %d %s %d", transmission, device, cmdClassifier, msgCounter, msgCounterRef, cmd.DataName(), errorNumber) 46 default: 47 result = fmt.Sprintf("%s: %s %s %d %s", transmission, device, cmdClassifier, msgCounter, cmd.DataName()) 48 } 49 50 return result 51 }