]> git.basschouten.com Git - openhab-addons.git/blob
652b962f2d130ed6211df002f22e4a72d181b6ed
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.automation.pwm.internal.handler.state;
14
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16
17 /**
18  * Active when, the duty cycle is 0% for at least a whole period.
19  *
20  * @author Fabian Wolter - Initial Contribution
21  */
22 @NonNullByDefault
23 public class AlwaysOffState extends State {
24     public AlwaysOffState(StateMachine context) {
25         super(context);
26
27         controlOutput(false);
28     }
29
30     @Override
31     public void dutyCycleChanged() {
32         if (Math.round(context.getDutycycle()) >= 100) {
33             nextState(DutycycleHundredState::new);
34         } else {
35             nextState(OnState::new);
36         }
37     }
38
39     @Override
40     protected void dutyCycleUpdated() {
41         // in case we came here by the dead-man switch
42         if (Math.round(context.getDutycycle()) > 0) {
43             nextState(OnState::new);
44         }
45     }
46
47     @Override
48     public void dispose() {
49         // nothing
50     }
51 }