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  }