/** * * <!-- 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); } }
/** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated NOT */ @Override public void enable() { logger.trace("enabling"); int chipType = BrickletLEDStrip.CHIP_TYPE_WS2801; int frameDuration = 100; Long clockFrequency = null; tinkerforgeDevice = new BrickletLEDStrip(getUid(), getIpConnection()); if (tfConfig != null) { if (tfConfig.eIsSet(tfConfig.eClass().getEStructuralFeature("chiptype"))) { String chipTypeString = tfConfig.getChiptype(); if (chipTypeString.equalsIgnoreCase("ws2801")) { chipType = BrickletLEDStrip.CHIP_TYPE_WS2801; } else if (chipTypeString.equalsIgnoreCase("ws2811")) { chipType = BrickletLEDStrip.CHIP_TYPE_WS2811; } else if (chipTypeString.equalsIgnoreCase("ws2812")) { chipType = BrickletLEDStrip.CHIP_TYPE_WS2812; } else { logger.error("Unknown ChipType {}", chipTypeString); // TODO raise configuration error } } if (tfConfig.eIsSet(tfConfig.eClass().getEStructuralFeature("frameduration"))) { frameDuration = tfConfig.getFrameduration(); } if (tfConfig.eIsSet(tfConfig.eClass().getEStructuralFeature("clockfrequency"))) { clockFrequency = tfConfig.getClockfrequency(); } // config Handling for ColorMapping must be before adding the // subdevices because subdevices use the ColorMapping if (tfConfig.eIsSet( tfConfig .eClass() .getEStructuralFeature(ModelPackage.LED_STRIP_CONFIGURATION__COLOR_MAPPING))) { colorMapping = tfConfig.getColorMapping(); } if (tfConfig.eIsSet( tfConfig .eClass() .getEStructuralFeature(ModelPackage.LED_STRIP_CONFIGURATION__SUB_DEVICES))) { String[] subdevices = tfConfig.getSubDevices().trim().split("\\s+"); for (String subId : subdevices) { addSubdevice(subId); } } } logger.debug("chipType is {}", chipType); logger.debug("frameDuration is {}", frameDuration); logger.debug("colorMapping is {}", colorMapping); try { tinkerforgeDevice.setChipType(chipType); tinkerforgeDevice.setFrameDuration(frameDuration); if (clockFrequency != null) { logger.debug("clockFrequency is {}", clockFrequency); tinkerforgeDevice.setClockFrequency(clockFrequency); } else { logger.debug("clockFrequency is not set"); } } catch (TimeoutException e) { TinkerforgeErrorHandler.handleError(this, TinkerforgeErrorHandler.TF_TIMEOUT_EXCEPTION, e); } catch (NotConnectedException e) { TinkerforgeErrorHandler.handleError( this, TinkerforgeErrorHandler.TF_NOT_CONNECTION_EXCEPTION, e); } }