cn.wsyjlly.mavlink.common.v1.messages.NamedValueInt Maven / Gradle / Ivy
package cn.wsyjlly.mavlink.common.v1.messages;
import cn.wsyjlly.mavlink.annotation.MavlinkMessage;
import cn.wsyjlly.mavlink.annotation.MavlinkMessageParam;
import cn.wsyjlly.mavlink.common.Message;
import cn.wsyjlly.mavlink.protocol.ByteArray;
import cn.wsyjlly.mavlink.protocol.util.ByteModel;
import java.util.Objects;
import java.util.Arrays;
/**********************************
* Author YSW
* Description
* Date 2020.11.26 - 02:45
**********************************/
@MavlinkMessage(
id = 252,
messagePayloadLength = 18,
description = "Send a key-value pair as integer. The use of this message is discouraged for normal packets, but a quite efficient way for testing new messages and getting experimental debug output."
)
public class NamedValueInt implements Message {
@MavlinkMessageParam(mavlinkType = "uint32_t", position = 1, typeSize = 4, streamLength = 4, description = "Timestamp (milliseconds since system boot)")
private long timeBootMs;
@MavlinkMessageParam(mavlinkType = "char", position = 2, typeSize = 1, streamLength = 10, description = "Name of the debug variable")
private String name;
@MavlinkMessageParam(mavlinkType = "int32_t", position = 3, typeSize = 4, streamLength = 4, description = "Signed integer value")
private int value;
private final int messagePayloadLength = 18;
private byte[] messagePayload = new byte[messagePayloadLength];
public NamedValueInt(long timeBootMs, String name, int value) {
this.timeBootMs = timeBootMs;
this.name = name;
this.value = value;
}
public NamedValueInt(byte[] messagePayload) {
if (messagePayload.length != messagePayloadLength){
throw new IllegalArgumentException("Byte array length is not equal to 18!");
}
messagePayload(messagePayload);
}
public NamedValueInt(){ }
@Override
public void messagePayload(byte[] messagePayload) {
this.messagePayload = messagePayload;
ByteArray byteArray = new ByteArray(messagePayload);
timeBootMs = byteArray.getUnsignedInt32(0);
name = byteArray.getChars(4,10);
value = byteArray.getInt32(14);
}
@Override
public byte[] messagePayload() {
ByteArray byteArray = new ByteArray(messagePayload);
byteArray.putUnsignedInt32(timeBootMs,0);
byteArray.putChars(name,4);
byteArray.putInt32(value,14);
return messagePayload;
}
@Override
public String hexStringPayload() {
return ByteModel.bytes2HexString(messagePayload);
}
public final NamedValueInt setTimeBootMs(long timeBootMs) {
this.timeBootMs = timeBootMs;
return this;
}
public final long getTimeBootMs() {
return timeBootMs;
}
public final NamedValueInt setName(String name) {
this.name = name;
return this;
}
public final String getName() {
return name;
}
public final NamedValueInt setValue(int value) {
this.value = value;
return this;
}
public final int getValue() {
return value;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
} else if (o != null && this.getClass().equals(o.getClass())) {
NamedValueInt other = (NamedValueInt)o;
if (!Objects.deepEquals(this.timeBootMs, other.timeBootMs)) {
return false;
} else if (!Objects.deepEquals(this.name, other.name)) {
return false;
} else {
return Objects.deepEquals(this.value, other.value);
}
} else {
return false;
}
}
@Override
public int hashCode() {
int result = 0;
result = 31 * result + Objects.hashCode(this.timeBootMs);
result = 31 * result + Objects.hashCode(this.name);
result = 31 * result + Objects.hashCode(this.value);
return result;
}
@Override
public String toString() {
return "NamedValueInt{" +
"timeBootMs=" + timeBootMs +
", name=" + name +
", value=" + value +
'}';
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy