package com.o3dr.services.android.lib.drone.mission.item.command;
import android.os.Parcel;
import com.o3dr.services.android.lib.drone.mission.MissionItemType;
import com.o3dr.services.android.lib.drone.mission.item.MissionItem;
/**
* Set a Relay pin’s voltage high or low.
*/
public class SetRelay extends MissionItem implements MissionItem.Command, android.os.Parcelable {
private int relayNumber;
private boolean enabled;
public SetRelay() {
super(MissionItemType.SET_RELAY);
}
public SetRelay(SetRelay copy) {
this();
this.relayNumber = copy.relayNumber;
this.enabled = copy.enabled;
}
/**
* @return relay number
*/
public int getRelayNumber() {
return relayNumber;
}
/**
* Set the relay number
*
* @param relayNumber
*/
public void setRelayNumber(int relayNumber) {
this.relayNumber = relayNumber;
}
/**
* @return true if relay is on, false if relay if off.
*/
public boolean isEnabled() {
return enabled;
}
/**
* @param enabled true for relay to be on, false for relay to be off.
*/
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Override
public MissionItem clone() {
return new SetRelay(this);
}
@Override
public String toString() {
return "SetRelay{" +
"enabled=" + enabled +
", relayNumber=" + relayNumber +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof SetRelay)) return false;
if (!super.equals(o)) return false;
SetRelay setRelay = (SetRelay) o;
if (relayNumber != setRelay.relayNumber) return false;
return enabled == setRelay.enabled;
}
@Override
public int hashCode() {
int result = super.hashCode();
result = 31 * result + relayNumber;
result = 31 * result + (enabled ? 1 : 0);
return result;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(this.relayNumber);
dest.writeByte(enabled ? (byte) 1 : (byte) 0);
}
private SetRelay(Parcel in) {
super(in);
this.relayNumber = in.readInt();
this.enabled = in.readByte() != 0;
}
public static final Creator<SetRelay> CREATOR = new Creator<SetRelay>() {
public SetRelay createFromParcel(Parcel source) {
return new SetRelay(source);
}
public SetRelay[] newArray(int size) {
return new SetRelay[size];
}
};
}