123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- package eu.tankernn.grid.model;
- import java.io.IOException;
- import java.util.Arrays;
- import java.util.stream.IntStream;
- import java.util.stream.Stream;
- import eu.tankernn.grid.Fan;
- /**
- * This class uses the communicator class to communicate with the GRID+
- * controller.
- *
- * @author Frans
- */
- public class GRID {
- private Communicator communicator = new Communicator();
- private Fan[] fans = IntStream.range(0, 6).mapToObj(i -> new Fan(communicator, i)).toArray(Fan[]::new);
- /**
- * This method simply runs the disconnect method of the communicator.
- */
- public void disconnect() {
- communicator.disconnect();
- }
- /**
- * Gets the fan at the specified index.
- *
- * @param index
- * The fan index (0-5)
- * @return The fan object
- */
- public Fan getFan(int index) {
- return fans[index];
- }
- public Communicator getCommunicator() {
- return communicator;
- }
- public double getTotalWattage() {
- return fanStream().mapToDouble(Fan::getWattage).sum();
- }
- public void pollFans() throws IOException, InterruptedException {
- if (communicator.isConnected())
- for (Fan f : fans)
- f.poll();
- }
- public void updateFanSpeeds(double cpuTemp, double gpuTemp, int minSpeed) {
- fanStream().forEach(f -> f.update(cpuTemp, gpuTemp, minSpeed));
- }
- public Stream<Fan> fanStream() {
- return Arrays.stream(fans);
- }
- }
|