]> git.zerfleddert.de Git - fnordlicht-mini/blame - firmware/fnordlicht-firmware/pwm.h
fix config.mk file header comment
[fnordlicht-mini] / firmware / fnordlicht-firmware / pwm.h
CommitLineData
ec1bef8e 1/* vim:ts=4 sts=4 et tw=80
2 *
3 * fnordlicht firmware
4 *
5 * for additional information please
6 * see http://lochraster.org/fnordlichtmini
7 *
8 * (c) by Alexander Neumann <alexander@bumpern.de>
9 * Lars Noschinski <lars@public.noschinski.de>
10 *
11 * This program is free software: you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License version 3 as published by
13 * the Free Software Foundation.
14 *
15 * This program is distributed in the hope that it will be useful, but WITHOUT
16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
17 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
18 * more details.
19 *
20 * You should have received a copy of the GNU General Public License along with
21 * this program. If not, see <http://www.gnu.org/licenses/>.
22 */
23
24#ifndef PWM_H
25#define PWM_H
26
27#include "timer.h"
28#include "color.h"
29
30#if PWM_CHANNELS != 3
31#error "PWM_CHANNELS is not 3, this is unsupported!"
32#endif
33
34#define PWM_HSV_SIZE sizeof(struct hsv_color_t)
35
36struct global_pwm_t
37{
38 /* current color */
39 struct rgb_color_t current;
40
41 /* target for fading engine */
42 struct dual_color_t target;
43
44 /* delay and step for fading engine */
45 uint8_t fade_delay[PWM_CHANNELS];
46 uint8_t fade_step[PWM_CHANNELS];
47};
48
49extern struct global_pwm_t global_pwm;
50
51/* prototypes */
52void pwm_init(void);
53void pwm_poll(void);
54void pwm_poll_fading(void);
55
56void pwm_fade_rgb(struct rgb_color_t *color, uint8_t step, uint8_t delay);
57void pwm_fade_hsv(struct hsv_color_t *color, uint8_t step, uint8_t delay);
58
59/* return true if fading process is complete */
60bool pwm_target_reached(void);
61
62/* convert hsv to rgb color */
63void pwm_hsv2rgb(struct dual_color_t *color);
64/* convert rgb to hsv color */
65void pwm_rgb2hsv(struct dual_color_t *color);
66
67/* stop fading, hold current color */
68void pwm_stop_fading(void);
69
70/* modify color */
71void pwm_modify_rgb(struct rgb_color_offset_t *color, uint8_t step, uint8_t delay);
72void pwm_modify_hsv(struct hsv_color_offset_t *color, uint8_t step, uint8_t delay);
73
74#endif
Impressum, Datenschutz