Search in sources :

Example 1 with LedList

use of org.openhab.binding.tinkerforge.internal.tools.LedList in project openhab1-addons by openhab.

the class MBrickletLEDStripImpl method setSelectedColor.

/**
     * <!-- begin-user-doc --> <!-- end-user-doc -->
     * 
     * @generated NOT
     */
@Override
public void setSelectedColor(HSBType color, DeviceOptions opts) {
    logger.debug("setSelectedColor called");
    // ColorMapping may be overridden by itemConfiguration
    char[] colorMapping = getColorMapping().toCharArray();
    String leds = null;
    // handle options
    if (opts != null) {
        if (opts.containsKey(COLOR_MAPPING)) {
            logger.debug("custom color mapping {} ", opts.getOption(COLOR_MAPPING));
            colorMapping = opts.getOption(COLOR_MAPPING).toCharArray();
        }
        if (opts.containsKey(LEDS)) {
            leds = opts.getOption(LEDS).trim();
            logger.debug("leds: {}", leds);
        }
    }
    if (leds == null || leds.length() == 0) {
        logger.error("\"leds\" option missing or empty, items configuration has to be fixed!");
        return;
    }
    // get the rgb values from HSBType
    Color rgbColor = color.toColor();
    short red = (short) rgbColor.getRed();
    short green = (short) rgbColor.getGreen();
    short blue = (short) rgbColor.getBlue();
    logger.debug("rgb is: {}:{}:{}", red, green, blue);
    // construct the values for the setRGBValues call
    HashMap<Character, short[]> colorMap = new HashMap<Character, short[]>(3);
    short[] reds = { red, red, red, red, red, red, red, red, red, red, red, red, red, red, red, red };
    short[] greens = { green, green, green, green, green, green, green, green, green, green, green, green, green, green, green, green };
    short[] blues = { blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue };
    colorMap.put('r', reds);
    colorMap.put('g', greens);
    colorMap.put('b', blues);
    LedList ledList = Tools.parseLedString(leds);
    try {
        if (ledList.hasLedRanges()) {
            Map<Integer, Short> ledRanges = ledList.getLedRanges();
            for (Integer led : ledRanges.keySet()) {
                tinkerforgeDevice.setRGBValues(led, ledRanges.get(led), colorMap.get(colorMapping[0]), colorMap.get(colorMapping[1]), colorMap.get(colorMapping[2]));
            }
        }
        if (ledList.hasLeds()) {
            for (Integer led : ledList.getLedNumbers()) {
                tinkerforgeDevice.setRGBValues(led, (short) 1, colorMap.get(colorMapping[0]), colorMap.get(colorMapping[1]), colorMap.get(colorMapping[2]));
            }
        }
        setColor(new HSBValue(color));
    } catch (TimeoutException e) {
        TinkerforgeErrorHandler.handleError(this, TinkerforgeErrorHandler.TF_TIMEOUT_EXCEPTION, e);
    } catch (NotConnectedException e) {
        TinkerforgeErrorHandler.handleError(this, TinkerforgeErrorHandler.TF_NOT_CONNECTION_EXCEPTION, e);
    }
}
Also used : NotConnectedException(com.tinkerforge.NotConnectedException) HashMap(java.util.HashMap) Color(java.awt.Color) LedList(org.openhab.binding.tinkerforge.internal.tools.LedList) HSBValue(org.openhab.binding.tinkerforge.internal.types.HSBValue) TimeoutException(com.tinkerforge.TimeoutException)

Aggregations

NotConnectedException (com.tinkerforge.NotConnectedException)1 TimeoutException (com.tinkerforge.TimeoutException)1 Color (java.awt.Color)1 HashMap (java.util.HashMap)1 LedList (org.openhab.binding.tinkerforge.internal.tools.LedList)1 HSBValue (org.openhab.binding.tinkerforge.internal.types.HSBValue)1