com.veraxsystems.vxipmi.coding.payload.lan.IpmiLanResponse Maven / Gradle / Ivy
The newest version!
/*
* IpmiLanResponse.java
* Created on 2011-08-02
*
* Copyright (c) Verax Systems 2011.
* All rights reserved.
*
* This software is furnished under a license. Use, duplication,
* disclosure and all other uses are restricted to the rights
* specified in the written license agreement.
*/
package com.veraxsystems.vxipmi.coding.payload.lan;
import com.veraxsystems.vxipmi.coding.payload.CompletionCode;
import com.veraxsystems.vxipmi.common.TypeConverter;
/**
* A wrapper class for IPMB response message.
*/
public class IpmiLanResponse extends IpmiLanMessage {
private CompletionCode completionCode;
public void setCompletionCode(byte completionCode) {
this.completionCode = CompletionCode.parseInt(TypeConverter
.byteToInt(completionCode));
}
public CompletionCode getCompletionCode() {
return completionCode;
}
/**
* Builds IPMI LAN response message from byte array.
*
* @param rawData
* @throws IllegalArgumentException
* when checksum is corrupted
*/
public IpmiLanResponse(byte[] rawData) {
setRequesterAddress(rawData[0]);
networkFunction = TypeConverter.intToByte((TypeConverter
.byteToInt(rawData[1]) & 0xfC) >> 2);
setRequesterLogicalUnitNumber(TypeConverter.intToByte(TypeConverter
.byteToInt(rawData[1]) & 0x03));
if (rawData[2] != getChecksum1(rawData)) {
throw new IllegalArgumentException("Checksum 1 failed");
}
setResponderAddress(rawData[3]);
setSequenceNumber(TypeConverter.intToByte((TypeConverter
.byteToInt(rawData[4]) & 0xfC) >> 2));
setResponderLogicalUnitNumber(TypeConverter.intToByte(TypeConverter
.byteToInt(rawData[4]) & 0x03));
setCommand(rawData[5]);
setCompletionCode(rawData[6]);
if (rawData.length > 8) {
byte[] data = new byte[rawData.length - 8];
System.arraycopy(rawData, 7, data, 0, rawData.length - 8);
setData(data);
}
if (rawData[rawData.length - 1] != getChecksum2(rawData)) {
throw new IllegalArgumentException("Checksum 2 failed");
}
}
@Override
public int getPayloadLength() {
int length = 8;
if (getData() != null) {
length += getData().length;
}
return length;
}
/**
* @deprecated LAN response does not hve payload data
*/
@Override
@Deprecated
public byte[] getPayloadData() {
return null;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy