001package com.pi4j.io.gpio; 002 003import java.util.EnumSet; 004 005/* 006 * #%L 007 * ********************************************************************** 008 * ORGANIZATION : Pi4J 009 * PROJECT : Pi4J :: Java Library (Core) 010 * FILENAME : PinState.java 011 * 012 * This file is part of the Pi4J project. More information about 013 * this project can be found here: https://www.pi4j.com/ 014 * ********************************************************************** 015 * %% 016 * Copyright (C) 2012 - 2021 Pi4J 017 * %% 018 * This program is free software: you can redistribute it and/or modify 019 * it under the terms of the GNU Lesser General Public License as 020 * published by the Free Software Foundation, either version 3 of the 021 * License, or (at your option) any later version. 022 * 023 * This program is distributed in the hope that it will be useful, 024 * but WITHOUT ANY WARRANTY; without even the implied warranty of 025 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 026 * GNU General Lesser Public License for more details. 027 * 028 * You should have received a copy of the GNU General Lesser Public 029 * License along with this program. If not, see 030 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 031 * #L% 032 */ 033 034/** 035 * Pin edge definition. 036 * 037 * @author Robert Savage (<a 038 * href="http://www.savagehomeautomation.com">http://www.savagehomeautomation.com</a>) 039 */ 040@SuppressWarnings("unused") 041public enum PinState { 042 043 LOW(0, "LOW"), 044 HIGH(1, "HIGH"); 045 046 private final int value; 047 private final String name; 048 049 private PinState(int value, String name) { 050 this.value = value; 051 this.name = name; 052 } 053 054 public boolean isHigh() { 055 return (this == HIGH); 056 } 057 058 public boolean isLow() { 059 return (this == LOW); 060 } 061 062 public int getValue() { 063 return value; 064 } 065 066 public String getName() { 067 return name; 068 } 069 070 @Override 071 public String toString() { 072 return name; 073 } 074 075 public static PinState getState(int state) { 076 for (PinState item : PinState.values()) { 077 if (item.getValue() == state) { 078 return item; 079 } 080 } 081 return null; 082 } 083 084 public static PinState getInverseState(PinState state) { 085 return (state == HIGH ? LOW : HIGH); 086 } 087 088 public static PinState getState(boolean state) { 089 return (state ? PinState.HIGH : PinState.LOW); 090 } 091 092 public static PinState[] allStates() { 093 return PinState.values(); 094 } 095 096 public static EnumSet<PinState> all() { 097 return EnumSet.of(PinState.HIGH, PinState.LOW); 098 } 099}