/* * %W% %E% Dymik739 * Email: dymik739@109.86.70.81 * * Copyright (C) 2023 FIOT Dev Team * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * Class which represents the RPI (Raspberry Pi) microcomputer. * * @author Dymik739 * @since 0.3 */ public class RPI extends Appliance { /** Contains current power draw from the power supply. */ private float power = 15.0f; /** * Defines the delay after the startup when the power usage starts to drop * to it's lowest value. */ private float postBootDecreaseIn = 10.0f; /** * Constructor for this class. * * @param plugged sets the power state on the beginning */ public RPI(boolean plugged) { super(plugged); super.setType("RPI"); } /** * Method which is used to simulate the device's behaviour. * The device draws it's maximum power for postBootDecreaseIn * seconds and gradually drops to it's lowest level, after that * it always stays on the lowest power usage level until a * reboot happens. * * @param seconds delta time to simulate for * @param ventRPM air flow generated by the vent */ public void step(float seconds, float ventRPM) { postBootDecreaseIn -= seconds; if ((postBootDecreaseIn <= 0) && (power >= 5.0)) { power -= seconds; } if (power < 5.0) { power = 5.0f; } } /** * Custom method for unplugging the device. * Adds the automatic resetting to the default values right after * turning the device off. */ @Override public void unplug() { super.unplug(); power = 15f; postBootDecreaseIn = 10f; } /** * Method for getting the power draw of this device. * * @return current power consumption */ public float getPowerConsumption() { if (super.getPowerState()) { return power; } else { return 0f; } } /** * Method for printing this devices' object in a nice way. * * @return String containing text description of this devices' state */ @Override public String toString() { return String.format("RPI(%s, %4.1fW)", super.getPowerState() ? "on" : "off", getPowerConsumption()); } }