source: roaraudio/roard/include/light.h @ 5980:334fe3fbca15

Last change on this file since 5980:334fe3fbca15 was 5980:334fe3fbca15, checked in by phi, 10 years ago

done some updates to the light control subsystem. This will help allowing a more modern infrstructure for light control filters

File size: 2.2 KB
Line 
1//light.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2014
5 *
6 *  This file is part of roard a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  RoarAudio is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#ifndef _LIGHT_H_
27#define _LIGHT_H_
28
29#include <roaraudio.h>
30
31#ifndef ROAR_WITHOUT_DCOMP_LIGHT
32
33#define LIGHT_CHANNELS_DEFAULT 512 /* one DMX Universe */
34#define MAX_EVENTS_PER_CYCLE   16  /* this*cfreq is event thruput (16*100Hz = 1.6kEvents/s) */
35
36extern struct light_state {
37 unsigned int    channels;
38 uint8_t events[MAX_EVENTS_PER_CYCLE];
39 size_t eventsqueuelen;
40 uint8_t * state;
41 uint8_t * changes;
42 uint8_t * output;
43 uint8_t * outputchanges;
44} g_light_state;
45
46extern struct light_mixer {
47 int stream;
48} g_light_mixer;
49
50int light_init  (uint32_t channels);
51int light_free  (void);
52
53int light_update(void);
54int light_reset (void);
55int light_reinit(void);
56
57int light_check_stream  (int id);
58int light_send_stream   (int id);
59
60// for plugins:
61int     light_dmxchannel_get(size_t index);
62int     light_dmxchannel_set(size_t index, uint8_t val);
63ssize_t light_dmxchannel_num(void);
64int     light_dmxchannel_swap_universe(uint8_t * universe, size_t len);
65
66int light_dmxevent_add(const uint8_t * events, size_t len);
67int light_dmxevent_read(const uint8_t ** events, size_t * len);
68#define light_dmxevent_addone(event) light_dmxevent_add(&(uint8_t){(event)}, 1)
69
70// codec filters:
71int cf_light_roardmx_read(int id, struct roar_stream_server * ss);
72int cf_light_roardmx_write(int id, struct roar_stream_server * ss);
73
74#endif
75
76#endif
77
78//ll
Note: See TracBrowser for help on using the repository browser.