package cc.blynk.server.core.model;
import cc.blynk.server.core.model.enums.PinType;
import static cc.blynk.utils.StringUtils.BODY_SEPARATOR;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 03.07.15.
*/
public class Pin {
public static final int NO_PIN = -1;
public byte pin = NO_PIN;
public boolean pwmMode;
public boolean rangeMappingOn;
public PinType pinType;
public String value;
public int min;
public int max = 255;
public String label;
public Pin() {
}
public Pin(int pin, PinType pinType) {
this.pin = (byte) pin;
this.pinType = pinType;
}
public Pin(byte pin, PinType pinType) {
this.pin = pin;
this.pinType = pinType;
}
public static String makeReadingHardwareBody(char pinType, byte pin) {
return "" + pinType + 'r' + BODY_SEPARATOR + pin;
}
public static String makeHardwareBody(char pinType, String pin, String value) {
return "" + pinType + 'w'
+ BODY_SEPARATOR + pin
+ BODY_SEPARATOR + value;
}
public static String makeHardwareBody(PinType pinType, byte pin, String value) {
return "" + pinType.pintTypeChar + 'w'
+ BODY_SEPARATOR + pin
+ BODY_SEPARATOR + value;
}
public static String makeHardwareBody(boolean pwmMode, PinType pinType, byte pin, String value) {
return pwmMode ? makeHardwareBody(PinType.ANALOG, pin, value) : makeHardwareBody(pinType, pin, value);
}
public boolean isSame(byte pin, PinType type) {
return this.pin == pin && ((this.pwmMode && type == PinType.ANALOG) || (type == this.pinType));
}
public String makeHardwareBody() {
return pwmMode ? makeHardwareBody(PinType.ANALOG, pin, value) : makeHardwareBody(pinType, pin, value);
}
public boolean isNotValid() {
return pin == NO_PIN || pinType == null;
}
public boolean notEmpty() {
return value != null && !isNotValid();
}
}