]> git.basschouten.com Git - openhab-addons.git/blob
c718de617c461cfcf51c2f10e640a9123cc02b2a
[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.binding.ihc.internal;
14
15 /**
16  * Class to convert IHC RF signal level value to openHAB signal level.
17  *
18  * @author Pauli Anttila - Initial contribution
19  */
20 public class SignalLevelConverter {
21
22     int signalLevel;
23
24     public SignalLevelConverter(int signalLevel) {
25         this.signalLevel = signalLevel;
26     }
27
28     public int getSystemWideSignalLevel() {
29         return convertSignalLevelToSystemWideLevel(signalLevel);
30     }
31
32     /**
33      * Convert internal signal level (0-18) to system wide signal level (0-4).
34      *
35      * @param signalLevel Internal signal level
36      * @return Signal level in system wide level
37      */
38     private int convertSignalLevelToSystemWideLevel(int signalLevel) {
39         int newLevel;
40
41         /*
42          * IHC signal levels are always between 0-18.
43          *
44          * Use switch case to make level adaption easier in future if needed.
45          */
46
47         switch (signalLevel) {
48             case 0:
49             case 1:
50                 newLevel = 0;
51                 break;
52
53             case 2:
54             case 3:
55             case 4:
56                 newLevel = 1;
57                 break;
58
59             case 5:
60             case 6:
61             case 7:
62             case 8:
63                 newLevel = 2;
64                 break;
65
66             case 9:
67             case 10:
68             case 11:
69             case 12:
70             case 13:
71                 newLevel = 3;
72                 break;
73
74             case 14:
75             case 15:
76             case 16:
77             case 17:
78             case 18:
79             default:
80                 newLevel = 4;
81         }
82
83         return newLevel;
84     }
85 }