/* Copyright (C) 2016 Mathieu Othacehe. All rights reserved. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #include #if CONFIG_HAL_BOARD == HAL_BOARD_LINUX #include #include "DiscoLED.h" #define RED_PWM_INDEX 9 #define GREEN_PWM_INDEX 8 #define BLUE_PWM_INDEX 15 #define DISCO_LED_LOW 0x33 #define DISCO_LED_MEDIUM 0x7F #define DISCO_LED_HIGH 0xFF #define DISCO_LED_OFF 0x00 DiscoLED::DiscoLED(): RGBLed(DISCO_LED_OFF, DISCO_LED_HIGH, DISCO_LED_MEDIUM, DISCO_LED_LOW), red_pwm(RED_PWM_INDEX), green_pwm(GREEN_PWM_INDEX), blue_pwm(BLUE_PWM_INDEX) { } bool DiscoLED::hw_init() { red_pwm_period = red_pwm.get_period(); green_pwm_period = green_pwm.get_period(); blue_pwm_period = blue_pwm.get_period(); red_pwm.init(); green_pwm.init(); blue_pwm.init(); red_pwm.enable(true); green_pwm.enable(true); blue_pwm.enable(true); return true; } bool DiscoLED::hw_set_rgb(uint8_t red, uint8_t green, uint8_t blue) { red_pwm.set_duty_cycle(red / UINT8_MAX * red_pwm_period); green_pwm.set_duty_cycle(green / UINT8_MAX * green_pwm_period); blue_pwm.set_duty_cycle(blue / UINT8_MAX * blue_pwm_period); return true; } #endif