github.com/enbility/spine-go@v0.7.0/spine/device.go (about)

     1  package spine
     2  
     3  import "github.com/enbility/spine-go/model"
     4  
     5  type Device struct {
     6  	address    *model.AddressDeviceType
     7  	dType      *model.DeviceTypeType
     8  	featureSet *model.NetworkManagementFeatureSetType
     9  }
    10  
    11  // Initialize a new device
    12  // Both values are required for a local device but provided as empty strings for a remote device
    13  // as the address is only provided via detailed discovery response
    14  func NewDevice(address *model.AddressDeviceType, dType *model.DeviceTypeType, featureSet *model.NetworkManagementFeatureSetType) *Device {
    15  	device := &Device{}
    16  
    17  	if dType != nil {
    18  		device.dType = dType
    19  	}
    20  
    21  	if address != nil {
    22  		device.address = address
    23  	}
    24  
    25  	if featureSet != nil {
    26  		device.featureSet = featureSet
    27  	}
    28  
    29  	return device
    30  }
    31  
    32  func (r *Device) Address() *model.AddressDeviceType {
    33  	return r.address
    34  }
    35  
    36  func (r *Device) DeviceType() *model.DeviceTypeType {
    37  	return r.dType
    38  }
    39  
    40  func (r *Device) FeatureSet() *model.NetworkManagementFeatureSetType {
    41  	return r.featureSet
    42  }
    43  
    44  func (r *Device) DestinationData() model.NodeManagementDestinationDataType {
    45  	return model.NodeManagementDestinationDataType{
    46  		DeviceDescription: &model.NetworkManagementDeviceDescriptionDataType{
    47  			DeviceAddress: &model.DeviceAddressType{
    48  				Device: r.Address(),
    49  			},
    50  			DeviceType:        r.DeviceType(),
    51  			NetworkFeatureSet: r.FeatureSet(),
    52  		},
    53  	}
    54  }