1 /* 2 * Copyright © 2016 Greg Chabala 3 * 4 * This file is part of brick-control-lab. 5 * 6 * brick-control-lab is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU Lesser General Public License as 8 * published by the Free Software Foundation, either version 3 of the 9 * License, or (at your option) any later version. 10 * 11 * brick-control-lab is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public License 17 * along with brick-control-lab. If not, see http://www.gnu.org/licenses/. 18 */ 19 package org.chabala.brick.controllab; 20 21 /** 22 * Identifiers for the power level of output ports on the control lab. 23 * 24 * <p>When an output is turned on without specifying a power level, the 25 * default power level is {@link #P8}. 26 */ 27 public enum PowerLevel { 28 /** 29 * Power level 0, turns the output off, and resets the default power level 30 * back to {@link #P8}. 31 */ 32 P0, 33 /** Power level 1, lowest power level. */ 34 P1, 35 /** Power level 2. */ 36 P2, 37 /** Power level 3. */ 38 P3, 39 /** Power level 4. */ 40 P4, 41 /** Power level 5. */ 42 P5, 43 /** Power level 6. */ 44 P6, 45 /** Power level 7. */ 46 P7, 47 /** Power level 8, highest power level. This is the default when not specified. */ 48 P8; 49 50 private final byte code; 51 52 /** 53 * Enumerates possible power level values for the change power level command. 54 */ 55 PowerLevel() { 56 code = getCodeFromLevel(ordinal()); 57 } 58 59 /** 60 * The byte expected by the control lab for the change power level command. 61 * @return a byte relating to this power level 62 */ 63 public byte getCode() { 64 return code; 65 } 66 67 private static byte getCodeFromLevel(int level) { 68 if (level == 0) { 69 return (byte) 0b10010010; 70 } else { 71 return (byte) (0b10110000 + (level - 1 & 0x07)); 72 } 73 } 74 }