package cc.blynk.server.core.model.widgets;
import cc.blynk.server.core.model.Pin;
import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import static cc.blynk.server.core.protocol.enums.Command.HARDWARE;
import static cc.blynk.utils.BlynkByteBufUtil.makeUTF8StringMessage;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 02.02.17.
*/
public abstract class OnePinReadingWidget extends OnePinWidget implements FrequencyWidget {
private int frequency;
private transient long lastRequestTS;
@Override
public boolean isTicked(long now) {
if (frequency > 0 && now >= lastRequestTS + frequency) {
this.lastRequestTS = now;
return true;
}
return false;
}
@Override
public int getDeviceId() {
return deviceId;
}
@Override
public void writeReadingCommand(Channel channel) {
if (isNotValid()) {
return;
}
ByteBuf msg = makeUTF8StringMessage(HARDWARE, READING_MSG_ID, Pin.makeReadingHardwareBody(pinType.pintTypeChar, pin));
channel.write(msg, channel.voidPromise());
}
}